package com.yydream.controller;

import com.yydream.common.utils.R;
import com.yydream.common.valid.AddGroup;
import com.yydream.common.valid.UpdateGroup;
import com.yydream.dto.SysMenuDTO;
import com.yydream.dto.SysUserDTO;
import com.yydream.dto.SysUserPageDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.yydream.service.SysMenuService;

/**
 * 菜单表控制层
 *
 * @author : yydream
 * @date : 2024-6-17
 */
@Api(tags = "菜单管理功能接口")
@RestController
public class SysMenuController {

    @Autowired
    private SysMenuService sysMenuService;

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @ApiOperation("通过ID查询单条数据")
    @GetMapping("/sysMenu/detail")
    public R queryById(@RequestParam(value = "id", required = true) Long id) {
        return sysMenuService.queryById(id);
    }

    /**
     * 分页查询
     *
     * @return 查询结果
     */
    @ApiOperation("菜单树查询")
    @PostMapping("/sysMenu/list")
    public R list(@RequestBody SysMenuDTO req) {
        return sysMenuService.listPage(req);
    }

    /**
     * 新增数据
     *
     * @param sysMenu 实例对象
     * @return 实例对象
     */
    @ApiOperation("新增数据")
    @PostMapping("/sysMenu/insert")
    public R add(@Validated(AddGroup.class) @RequestBody SysMenuDTO sysMenu) {
        return sysMenuService.insert(sysMenu);
    }

    /**
     * 更新数据
     *
     * @param sysMenu 实例对象
     * @return 实例对象
     */
    @ApiOperation("更新数据")
    @PostMapping("/sysMenu/update")
    public R edit(@Validated(UpdateGroup.class) @RequestBody SysMenuDTO sysMenu) {
        return sysMenuService.update(sysMenu);
    }

    /**
     * 通过主键删除数据
     *
     * @param ids 主键
     * @return 是否成功
     */
    @ApiOperation("通过主键删除数据")
    @PostMapping("/sysMenu/deleteById")
    public R deleteById(@RequestParam(value = "ids", required = true) Long[] ids) {
        return sysMenuService.deleteById(ids);
    }
}